package com.fwmagic.dp._1;

/**
 * 懒汉式，线程不安全
 * 多线程下安全保障方式：
 * 1.(双if + synchronized)方法内添加同步代码块，两次非空判断
 * 2.方法上添加synchronized
 */
public class Singleton2 {

    //定义实例变量，不创建实例对象
    private static Singleton2 instance = null;

    //私有化构造方法
    private Singleton2() {
    }

    //对外提供获取实例的方法
    public static Singleton2 getInstance() {
        if (instance == null) {
            synchronized (Singleton2.class) {
                if (instance == null) {
                    instance = new Singleton2();
                }
            }
        }
        return instance;
    }
}

/*
public class Singleton2 {

    //定义实例变量，不创建实例对象
    private static Singleton2 instance = null;

    //私有化构造方法
    private Singleton2() {
    }

    //对外提供获取实例的方法
    public synchronized static Singleton2 getInstance() {
        if (instance == null) {
            instance = new Singleton2();
        }
        return instance;
    }
}
*/

